// 不用泛型的话，这个函数可能是下面这样：
function identity(age) {
    return age;
}
//传入的类型与返回的类型应该是相同的。如果我们传入一个数字，我们只知道任何类型的值都有可能被返回
function identity1(arg) {
    return arg;
}
//添加个类型T 帮助我们捕获用户传入的类型   之后就可以使用这个类型 作为返回值
function identity2(arg) {
    return arg;
}
identity2('21354');
// 类型 t 可以是任意类型
// 若是数字类型  没有 .length  会出现报错 
// function loggingIdentity<T>(arg: T): T {
//     console.log(arg.length);  // Error: T doesn't have .length
//     return arg;
// }
function loggingIdentity1(age) {
    console.log(age.length);
    return age;
}
// 等同于
function loggingIdentity(arg) {
    console.log(arg.length); // Array has a .length, so no more error
    return arg;
}
loggingIdentity([5164]);
loggingIdentity(['5164']);
// loggingIdentity1(15123)  //类型“number”的参数不能赋给类型“unknown[]”的参数
loggingIdentity1([5164]);
loggingIdentity1(['5164']);
function identity3(arg) {
    return arg;
}
var myIdentity = identity3;
